{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 字典 `dict`"
   ]
  },
  {
   "source": [
    "- 字典属于一种新的数据结构，称为映射 `mapping`\n",
    "- 字典的作用和列表类似，都是用来存储对象的容器\n",
    "- 列表储存数据的性能很好，但是查询数据的性能很差\n",
    "- 在字典中每一个元素都有一个唯一的名字，通过这个唯一的名字可以快速的查找到指定的元素\n",
    "- 在查询元素时，字典的效率是非常快的\n",
    "- 在字典中可以保存多个对象，每一个对象都会有一个唯一的名字\n",
    "    - 这个唯一的名字我们称为键 `key`\n",
    "        - 通过 `key` 可以快速的查询 `value`\n",
    "    - 这个对象，我们称其为值 `value`\n",
    "    - 所以字典，我们也称为叫做键值对 `key - value` 结构\n",
    "    - 每个字典中都可以有多个键值对，而每一个键值对我们称其为一项 `item`\n",
    "- 语法：\n",
    "    - 创建\n",
    "        - `{key:value,key:value,key:value...}`\n",
    "        - 字典的值可以是任意对象\n",
    "        - 字典的键可以是任意的不可变对象（`int`、`str`、`bool`、`tuple`...），但是一般我们都会使用 `str`\n",
    "        - 字典的键是不能够重复的，如果出现重复的后面的会替换掉前面的\n",
    "    - 查询\n",
    "        - `字典[key]`\n",
    "        - 如果使用了字典中不存在的键，会抛出异常 `KeyError`"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "d_1 = {} # 空字典\n",
    "\n",
    "d_2 = {'name':'Issac', 'age':18, 'gender':'♂', 'age':19}\n",
    "\n",
    "print(f'd_1 = {d_1}, type(d_1) = {type(d_1)}')\n",
    "print(f'd_2 = {d_2}, type(d_2) = {type(d_2)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "d_1 = {'name':'Issac', 'age':18, 'gender':'♂', 'age':19}\n",
    "\n",
    "print(f\"d_1['name'] = {d_1['name']}\")\n",
    "print(f\"d_1['age'] = {d_1['age']}\")\n",
    "print(f\"d_1['gender'] = {d_1['gender']}\")"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a"
  },
  "kernelspec": {
   "name": "python395jvsc74a57bd074c7218724031fd2ef8447a3bbda77489cffef548a027660cea6b63e0f8437c7",
   "display_name": "Python 3.9.5 64-bit"
  },
  "language_info": {
   "name": "python",
   "version": "3.9.5"
  },
  "orig_nbformat": 2,
  "metadata": {
   "interpreter": {
    "hash": "74c7218724031fd2ef8447a3bbda77489cffef548a027660cea6b63e0f8437c7"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}